package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.GroupCityBatchDTO;
import org.jsola.hr.query.GroupCityQuery;
import org.jsola.hr.vo.GroupCityListVO;
import org.jsola.hr.vo.GroupCityVO;

import java.util.List;

/**
 * 子公司分管城市关系表
 *
 * @author zhr
 */
@Api(tags = "hr-子公司分管城市关系表")
public interface IGroupCityControllerAPI {




    /**
     * 批量编辑、新增、删除子公司分管城市关系表
     * @param groupCityBatchDTO 要操作的子公司分管城市关系表
     * @return 操作之后的全部子公司分管城市关系表
     */
    @ApiOperation(value = "批量操作子公司分管城市关系表(没有的新增/已有的修改/没有的删除)")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "groupCityBatchDTO", dataType = "GroupCityBatchDTO", value = "要操作的字段数据", paramType = "body")
    })
    Result batch(GroupCityBatchDTO groupCityBatchDTO);



    /**
     * 删除单个子公司分管城市关系表，彻底删除
     * @param groupCityId 子公司分管城市关系表id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个子公司分管城市关系表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "groupCityId", dataType = "String", value = "子公司分管城市关系表id", paramType = "path")
    })
    Result<Integer> delete(String groupCityId);


    /**
     * 批量删除子公司分管城市关系表，彻底删除
     * @param groupCityIds 子公司分管城市关系表id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除子公司分管城市关系表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "groupCityIds", dataType = "String[]", value = "子公司分管城市关系表id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(String[] groupCityIds);


    /**
     * 根据子公司分管城市关系表id查询子公司分管城市关系表详情
     * @param groupCityId 子公司分管城市关系表id
     * @return 子公司分管城市关系表详情
     */
    @ApiOperation(value="根据子公司分管城市关系表id查询子公司分管城市关系表详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "groupCityId", dataType = "String", value = "子公司分管城市关系表id", paramType = "path")
    })
    Result<GroupCityVO> findById(String groupCityId);


    /**
     * 查询子公司分管城市关系表
     * @param groupCityQuery 子公司分管城市关系表查询参数
     * @return page
     */
    @ApiOperation(value="查询子公司分管城市关系表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "groupCityQuery", dataType = "GroupCityQuery", value = "子公司分管城市关系表查询参数", paramType = "query")
    })
    Result<List<GroupCityListVO>> listAll(GroupCityQuery groupCityQuery);


     /**
     * 分页查询子公司分管城市关系表
     * @param groupCityQuery 子公司分管城市关系表查询参数
     * @return page
     */
    @ApiOperation(value="分页查询子公司分管城市关系表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "groupCityQuery", dataType = "GroupCityQuery", value = "子公司分管城市关系表查询参数", paramType = "query")
    })
    Result<Page<GroupCityListVO>> page(GroupCityQuery groupCityQuery);


}

